package com.youlu.campus.starter.trace.utils;

import cn.hutool.core.bean.BeanUtil;
import com.youlu.campus.starter.trace.bean.MDCParam;
import org.slf4j.MDC;

import java.util.Map;

public class MDCUtil {

    public static void put(MDCParam param) {
        Map<String, Object> map = BeanUtil.beanToMap(param);
        TraceLocalUtil.setMap(map);

        //MDC.setContextMap(traceMap); 源码是,会存在覆盖问题 传入的Map 替换 原来MDC的中的map 决定使用put
        for (String key : map.keySet()) {
            if (map.get(key) != null) {
                MDC.put(key, map.get(key).toString());
            }
        }
    }

    public static void clear() {
        MDC.clear();
        TraceLocalUtil.clear();
    }
}
